/*
 * @Author: wwssaabb
 * @Date: 2021-12-08 17:12:49
 * @LastEditTime: 2021-12-08 17:12:50
 * @FilePath: \handwritten-code\algorithm\只出现一次的数字.js
 */

/*
给定一个非空整数数组， 除了某个元素只出现一次以外， 其余每个元素均出现两次。 找出那个只出现了一次的元素。
说明：
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗？

示例 1:
输入: [2, 2, 1]
输出: 1

示例 2:
输入: [4, 1, 2, 1, 2]
输出: 4

来源： 力扣（ LeetCode）
链接： https: //leetcode-cn.com/problems/single-number
*/

//使用位运算-异或，相同数字异或运算等于0，时间复杂度O(n)、空间复杂度O(1)
var singleNumber = function (nums) {
  let res = 0;
  for (let i = 0; i < nums.length; i++) res ^= nums[i]
  return res
};